iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
0
自我挑戰組

Tensorflow學習日記系列 第 24

tensorflow學習日記Day24 Cifar-10影像辨識資料集

  • 分享至 

  • xImage
  •  

input:
#匯入cifar10模組
from keras.datasets import cifar10
import numpy as np
#設定seed讓每次需要隨機產生的資料都有相同的輸出。
np.random.seed(10)
output:
Using TensorFlow backend.

input:
#下載檔案並解壓縮
(x_img_train,y_label_train),
(x_img_test,y_label_test)=cifar10.load_data()
output:
Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
170500096/170498071 [==============================] - 116s 1us/step

input:
#讀取資料
(x_img_train,y_label_train),
(x_img_test,y_label_test)=cifar10.load_data()
#查看資料筆數
print('train:',len(x_img_train))
print('test:',len(x_img_test))
output:
train: 50000
test: 10000

input:
#查看資料形狀
x_img_train.shape
output:
(50000, 32, 32, 3)
(筆數,32x32,rgb三原色所以是三)

input:
#第零筆影像的內容
x_img_test[0]
output:
array([[[158, 112, 49],
[159, 111, 47],
[165, 116, 51],
...,
[137, 95, 36],
[126, 91, 36],
[116, 85, 33]],
...
#三個數字是rgb三原色

input:
#查看y_label_train的形狀
y_label_train.shape
output:
(50000, 1)

input:
#定義label_dict來決定每個數字代表的類別
label_dict={0:"airplane",1:"automobile",2:"bird",3:"cat",4:"deer",5:"dog",6:"frog",7:"horse",8:"ship",9:"truck"}

#修改plot_images_labels_prediction()函數
input:
import matplotlib.pyplot as plt
def plot_images_labels_prediction(images,labels,prediction,idx,num=10):
fig=plt.gcf()
fig.set_size_inches(12,14)
if num>25:num=25
for i in range(0,num):
ax=plt.subplot(5,5,1+i)
ax.imshow(images[idx],cmap='binary')
title=str(i)+','+label_dict[labels[i][0]]
if len(prediction)>0:
title+='=>'+label_dict[prediction[i]]
ax.set_title(title,fontsize=10)
ax.set_xticks([]);ax.set_yticks([])
idx+=1
plt.show()

input:
#查看前十筆訓練資料
plot_images_labels_prediction(x_img_train,y_label_train,[],0)
output:
https://scontent.ftpe8-3.fna.fbcdn.net/v/t1.15752-9/71965043_1358127197702679_8736526829449379840_n.png?_nc_cat=106&_nc_oc=AQn5qsZ0776UJOYwOpEHsumuvGd8Ksp3_DRWklXxBhX-LURuQckvVt63anlvmUmofCE&_nc_ht=scontent.ftpe8-3.fna&oh=1b9e3e7ba43baf4d97b13f18f981329f&oe=5E3365F0

#預處理image資料
#查看第一個影像的第一個點
input:
x_img_train[0][0][0]
output:
#三個數字分別代表RGB
array([59, 62, 63], dtype=uint8)

#將數字影像標準化
input:
x_img_train_normalize=x_img_train.astype('float32')/255.0
x_img_test_normalize=x_img_test.astype('float32')/255.0
x_img_train_normalize[0][0][0]
#標準化之後
output:
array([0.23137255, 0.24313726, 0.24705882], dtype=float32)

#查看原本資料形狀
input:
y_label_train.shape
output:
(50000, 1)
#(50000筆資料,一個0-9的數字代表資料類別)

#查看前五筆資料
input:
y_label_train[:5]
output:
#數字是前五筆資料的資料類別
array([[6],
[9],
[9],
[4],
[1]], dtype=uint8)

#使用OneHot轉換類別
input:
from keras.utils import np_utils
y_label_train_OneHot=np_utils.to_categorical(y_label_train)
y_label_test_OneHot=np_utils.to_categorical(y_label_test)

#查看資料形狀
input:
y_label_train_OneHot.shape
output:
(50000, 10)
#(50000筆資料,十個0或1的數字組合代表資料類別)

#查看轉化後的結果
input:
y_label_train_OneHot[:5]
output:
array([[0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0., 0., 0., 0., 0.]], dtype=float32)


上一篇
tensorflow學習日記Day23 OneHot encoding
下一篇
tensorflow學習日記Day24 Cifar-10模型建立
系列文
Tensorflow學習日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言